//
//  UserData.h
//  beast_tamer
//
//  Created by bean on 13/2/6.
//
//

#ifndef __beast_tamer__UserData__
#define __beast_tamer__UserData__

#include "cocos2d.h"
#include "EnumManager.h"

class MonsterData;
class TamerData;
const int MAX_MONSTER_SLOT_COUNT = 3;
const int MAX_ITEM_COUNT = 50;
//SpecialCombination

class UserData : public cocos2d::CCObject
{
    
    
    int m_gold = 0;
    int m_currentStage_id = 0;
    int m_title = 0;
    
    TamerData* m_tamer;
    cocos2d::CCArray* m_monsters;
    MonsterData* m_equipMonsterts[MAX_MONSTER_SLOT_COUNT];
    
    int m_items[MAX_ITEM_COUNT] = {0};
    

    
public:
    UserData(void);
    virtual ~UserData(void);
    virtual bool init(void);
    
    static UserData* sharedUserData(void);
    
/////////////////處理玩家身上的所有道具
    bool addItem(int itemId, int slot);
    bool sellItem(int slot);
    int getItem(int slot);
/////////////////怪物的處理
    //從怪物列表移除怪物
    void removeMonsterFromMonsters(int slot);
    //在怪物列表加一支怪物
    void addMonsterToMonsters(MonsterData* Monster);
    //在怪物列表取得怪物
    MonsterData* getMonsterFromMonsters(int slot);
    
    //從裝備中的怪物列表移除怪物
    void removeMonsterFromeEquipMonster(int slot);
    //在裝備中的怪物列表加入怪物
    void addMonsterToEquipMonster(int MonsterSlot, int equipSlot);
    //在裝備中的怪物列表取得怪物
    MonsterData* getMonsterFromEquipMonsters(int slot);
    //取得特別組合
    int currentSpecialCombination(void);
    //怪物裝備道具
    void setMonsterEquipItem(int itemSlot, int equipMonsterSlotId, int MonsterItemSlotId);
    //移除怪物道具
    void removeMonsterEquipItem( int itemSlot, int equipMonsterSlotId, int MonsterItemSlotId);
    //怪物裝備技能
    void setMonsterEquipSkill(int itemSlot, int equipMonsterSlotId, int MonsterSkillSlotId);
    //移除怪物裝備技能
    void removeMonsterEquipSkill(int itemSlot, int equipMonsterSlotId, int MonsterSkillSlotId);
    
    //取得怪物裝備列表中的某支怪物的Atk
    int getMonsterAtk(int slot);
    //取得怪物裝備列表中的某支怪物的Def
    int getMonsterDef(int slot);
    //取得怪物裝備列表中的某支怪物的HP
    int getMonsterHp(int slot);
    //取得怪物裝備列表中的某支怪物的速度
    int getMonsterSpeed(int slot);
    //取得怪物裝備列表中的某支怪物的攻速
    int getMonsterAtkSpeed(int slot);
    
////////////////馴獸師的處理
    //裝備馴獸師的技能
    void setTamerEquipSkillId(int itemSlot, int tamer_slot);
    //移除馴獸師的技能
    void removeTamerEquipSkill(int itemSlot, int tamer_slot);
    //取得馴獸師的技能
    int getTamerEquipSkillId(int slot);
    //馴獸師正在使用的技能
    int currentTamerTitle(void);
    
///////////////錢
    int getGold(void);
    void setGold(int gold);
///////////////存檔
    void saveAllData(void);
    
private:
    
    void loadingHasObtainMonsterSkill(void);
    void loadingHasObtainMonsterItem(void);
    void loadingHasObtainTamerSkill(void);
    
    void loadingHasEquipedMonsters(void);
    void loadingHasObtainMonsters(void);
    void loadingTamer(void);
    
    void loadingGold(void);
    void loadingMapData(void);
};

#endif /* defined(__beast_tamer__UserData__) */
